#!/bin/bash

echo "整数计算"
num1=25
num2=9

let num3=$num1+$num2
echo $num1+$num2 = $num3
let num3=$num1-$num2
echo $num1-$num2 = $num3
let num3=$num1*$num2
echo $num1*$num2 = $num3
let num3=$num1/$num2
echo $num1/$num2 = $num3
let num3=$num1%$num2
echo $num1%$num2 = $num3

# $[] $(()) 
# $[]和$(())是一样的，都是进行数学运算的。支持+ - * / %（“加、减、乘、除、取模”）。
# 但是注意，bash只能作整数运算，对于浮点数是当作字符串处理的。
# 计算结果可以做右值，但是不能作为 条件判断
num3=$[$num1%$num2]
echo \$[$num1%$num2] = $num3

num3=$(($num1%$num2))
echo \$\(\($num1%$num2\)\) = $num3

# ((exp))结构扩展并计算一个算术表达式的值，如果表达式的结果为0，那么返回的退出状态码为1，或者 是"假"，
# 而一个非零值的表达式所返回的退出状态码将为0，或者是"true"。
# 若是逻辑判断，表达式exp为真则为1,假则为0。
# 双括号中的变量可以不使用$符号前缀
if ((num1 > num2))
then
    echo "$num1 > $num2"
    if(( num2 > num3))
    then
        echo "$num2 > $num3"
    fi

else
    echo "not $num1 > $num2"
fi

expr $num1 + $num2
expr $num1 - $num2
expr $num1 \* $num2
expr $num1 / $num2
expr $num1 % $num2

echo "浮点数计算"
num1=25.55
num2=9.233
echo $num1+$num2
echo $num1+$num2 | bc

echo $num1-$num2
echo $num1-$num2 | bc

echo $num1 \* $num2
echo $num1 \* $num2 | bc

echo $num1 / $num2
echo $num1 / $num2 | bc
echo "五位数精度 scale=5; $num1 / $num2"
echo "scale=5; $num1 / $num2" |bc

echo "三角函数计算"
echo "sin($num1)"
echo "s($num1)" | bc -lq

echo "cos($num1)"
echo "c($num1)" | bc -lq

echo "tan($num1)"
echo "s($num1)/c($num1)" | bc -lq

echo "指数对数计算"

echo "自然对数 ln($num2)"
echo "l($num2)" | bc -lq

echo "自然指数 exp($num2)"
echo "e($num2)" | bc -lq

echo "自然指数 exp (自然对数 ln($num2))"
echo "e(l($num2))" | bc -lq

# $() 和 `` 等价
num3=`echo "e(l($num2))" | bc -lq`
echo $num3
num3=$(echo "e(l($num2))" | bc -lq)
echo $num3